package main.java.day08;

/**
 * 给定一个非空整数数组，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素。
 *
 * 说明：
 *
 * 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗？
 *
 * 示例 1:
 *
 * 输入: [2,2,1]
 *
 *       [0,1,2]
 * 输出: 1
 * 示例 2:
 *
 * 输入: [4,1,2,1,2]
 * 输出: 4
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/single-number
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * 一个是0与一个数做异或操作还是本身，本身与本身做异或操作为0，异或操作还满足交换率。
 *只要重复都自身与自身比较 都清零  最后一个不会还是本身
 */
public class day08 {
    public static int singleNumber(int[] nums) {
        int ans = 0;
        for(int num: nums) {
            ans =ans^num;
        }
        return ans;
    }

    public static void main(String[] args) {
        int[] nums={1,1,2};
        System.out.println(day08.singleNumber(nums));
    }
}
